常见滤波器简要对比介绍及Matlab实现 |
您所在的位置:网站首页 › 贝塞尔曲线 matlab › 常见滤波器简要对比介绍及Matlab实现 |
常见滤波器简要介绍及Matlab实现 简要收集关于“椭圆、切比雪夫、巴特沃斯、贝塞尔”滤波器的使用与特点,不完善之处还请提出意见与谅解! 1.椭圆滤波器Elliptic Filter①椭圆滤波器又称考尔滤波器(Cauer filter),是在通带和阻带等波纹特性的一种滤波器,因此通带,阻带逼近特性良好。
②相较其他类型的滤波器,椭圆滤波器在阶数相同的条件下有着最小的通带和阻带波动。 ③相比其他滤波器其阻带下降最快,过渡带更为陡峭、更窄的特性(通带和阻带的起伏为代价来换取)。相同阶数时,椭圆滤波 器的幅频曲线下降最陡,其次为切比雪夫滤波器,再次为巴特沃斯滤波器,下降最平缓的为贝塞尔滤波器。
Matlab实现方法: [n,Wn]=ellipord(wp,ws,Rp,Rs); 椭圆滤波器最小阶数n和截止频率Wn的确定函数,并使滤波器在通带内(0 , Wp)的波纹系数小于通带最大衰减 R p ,阻带内(W s , 1)的波纹系数大于阻带最小衰减 R s 。Rp、Rs分别为通带最大波纹和阻带最小衰减;wp、ws分别为为通带边界频率和阻带边界频率,单位为rad/s。这四个参数为滤波器的基本性能指标. [ b, a] = ellip(n , R p , R s , Wn); 函数的功能是设计滤波器 ,参n表示最小阶数,参数R p表示通带最大波纹度(单位dB),参数R s表示阻带最小衰减(单位dB),参数Wn表示归一化的低通滤波器截止频率(如果阶数n与截止频率不由ellipord计算,可以假设截止频率为F,则有Wn =F/(Fs/2)=F*2/Fs)。 如 : 设计一个带通椭圆数字滤波器 , 通带为 100 ~200 H z,过渡带均为 50 H z,通带波纹小于 3 db ,阻带衰减为 30 db ,采样频 率 f s =1 000 H z 。其程序为 : fs = 1000 ; Rp =3; Rs =30 ; Wp =2 *[ 100 200] /fs; W s = 2 *[ 80 220] /f s; [ n , W n] = ellipo rd (Wp , W s , Rp , Rs); [ b , a] = ellip(n , Rp, Rs Wn); dataOut = filter(b,a,dataIn); 2.巴特沃斯滤波器① 巴特沃斯滤波器是一种在通带和阻带都平坦的滤波器,通带率响应曲线最平坦,没有起伏,阻带频带则逐渐下降为零,下降慢,在过渡带上很容易造成失真。 ②在振幅对数与角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。 ③一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝,三阶巴特沃斯滤波器的衰减率为每倍频18分贝,如此类推。 ④巴特沃斯滤波器的频率特性曲线,无论在通带内还是阻带内都是频率的单调函数。因此,当通带的边界处满足指标要求时,通带内肯定会有裕量。所以,更有效的设计方法应该是将精确度均匀的分布在整个通带或阻带内,或者同时分布在两者之内。这样就可用较低阶数的系统满足要求。
下图是巴特沃斯滤波器(左上)和同阶第一类切比雪夫滤波器(右上)、第二类切比雪夫滤波器(左下)、椭圆函数滤波器(右下)的频率响应图。
巴特沃斯低通滤波器可用如下振幅的平方对频率的公式表示: 巴特沃斯低通滤波器可用如下振幅的平方对频率的公式表示: 其中, = 滤波器的阶数 = 截止频率 = 振幅下降为 -3分贝时的频率 wp= 通频带边缘频率 在通频带边缘的数值 说明:buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。 % [B,A] = butter(N,Wn,'high') ---用来设计高通滤波器 % [B,A] = butter(N,Wn,'low') --低通滤波器 [B,A] = butter(N,Wn)--带通滤波器 out_sign=filter(B,A,x_sign); %输入信号最好是转化为double型为了确定滤波器的最小阶数N,通过[N,Wn]=buttord(Wp,Ws,Rp,Rs)函数获得 。 完整示例8-30Hz带通滤波: fs = 1000 ; %信号的采样频率 wp=[8 30]*2/fs; %通带边界频率 ,单位为rad/s ws=[7 32]*2/fs; %阻带边界频率 ,单位为rad/s Rp=1; %通带最大波纹度 ,单位dB (不要太小) Rs=30; %表示阻带最小衰减,单位dB [N,Wn]=buttord(Wp,Ws,Rp,Rs); %巴特沃斯数字滤波器的阶数n和-3dB归一化截止频率Wn [B,A]=butter(N,Wn); %得到n阶巴特沃斯滤波的分子分母 dataOut = filter(B,A,dataIn); 3.切比雪夫滤波器①切比雪夫滤波器是在通带或阻带上频率响应幅度等波纹波动(通带平坦、阻带等波纹或是阻带平坦、通带等波纹)的滤波器,振幅特性在通带内是等波纹。
②切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应的幅频特性不如后者平坦。 ③切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小,但是在通频带内存在幅度波动。 ④在通带(或称“通频带”)上频率响应幅度等波纹波动的滤波器称为“I型切比雪夫滤波器”,在阻带(或称“阻频带”)上频率响应幅度等波纹波动的滤波器称为“II型切比雪夫滤波器”
fs = 1000; % Hz采样频率 wp = 55/(fs/2); %通带截止频率,取50~100中间的值,并对其归一化 ws = 90/(fs/2); %阻带截止频率,取50~100中间的值,并对其归一化 Rp = 3; %通带允许最大衰减为 db Rs = 40; %阻带允许最小衰减为 db [n,Wn]=cheb1ord(Wp,Ws,Rp,Rs); % 获取阶数和截止频率 [b,a]=cheby1(n,Rp,Wn, 'low'); %获得转移函数系数 dataOut = filter(b,a,dataIn); %信号滤波运算 4.贝塞尔滤波器Bessel filter 贝赛尔(l)滤波器是具有最大平坦的群延迟(线性相位响应)的线性过滤器,即最平坦的幅度和相位响应,常用在音频天桥系统中。具有最平坦的幅度和相位响应。带通(通常为用户关注区域)的相位响应近乎呈线性。 由于具有向其截止频率以下的所有频率提供等量延时的特性,才被用于音频设备中,在音频设备中,必须在不损害频带内多信号的相位关系前提下,消除带外噪声。另外,贝塞尔滤波器的阶跃响应很快,并且没有过冲或振铃,这使它在作为音频DAC输出端的平滑滤波器,或音频ADC输入端的抗混叠滤波器方面,是一种出色的选择。贝塞尔滤波器还可用于分析D类放大器的输出,以及消除其它应用中的开关噪声,来提高失真测量和示波器波形测量的精确度。
[b,a] = besself(n,Wn) %低通滤波器(Wn为二元向量时,为带通) % Wn是一个实际频率值,不是相对量 [b,a] = besself(n,Wn,’ftype’); % ftype类型low,hight,stop dataOut = filter(b,a,dataIn); %信号滤波运算 四种滤波器的区别对比①贝塞尔滤波器具有最平坦的幅度和相位响应。带通(通常为用户关注区域)的相位响应近乎呈线性。 ②巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。 ③切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应的幅频特性不如后者平坦。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小,但是在通频带内存在幅度波动。 ④相同阶数时:椭圆滤波器的幅频曲线下降最陡,其次为切比雪夫滤波器,再次为巴特沃斯滤波器,下降最平缓的为贝塞尔滤波器。 ⑤相同阶数时:巴特沃斯滤波器通带最平坦,阻带下降慢;切比雪夫滤波器通带等纹波,阻带下降较快;贝塞尔滤波器通带等纹波,阻带下降慢。也就是说幅频特性的选频特性最差。但是,贝塞尔滤波器具有最佳的线性相位特性;椭圆滤波器在通带等纹波(阻带平坦或等纹波),阻带下降最快。 转插两篇他人博客供大家参考:博客地址 http://blog.sina.com.cn/s/blog_49c02a8c0100yszh.html (matlab提供了简便的产生各种滤波器的方法) https://blog.csdn.net/LYduring/article/details/80443573 (几种常见空间滤波器MATLAB实现) https://blog.csdn.net/colapin/article/details/52840075 (七种滤波方法的matlab实现和测试) https://www.cnblogs.com/alimy/p/9140695.html (切比雪夫Ⅰ型滤波器设计:低通、高通、带通和带阻) % Cheby1Filter.m % 切比雪夫Ⅰ型滤波器的设计 % clear; close all; clc; fs = 1000; %Hz 采样频率 Ts = 1/fs; N = 1000; %序列长度 t = (0:N-1)*Ts; delta_f = 1*fs/N; f1 = 50; f2 = 100; f3 = 200; f4 = 400; x1 = 2*0.5*sin(2*pi*f1*t); x2 = 2*0.5*sin(2*pi*f2*t); x3 = 2*0.5*sin(2*pi*f3*t); x4 = 2*0.5*sin(2*pi*f4*t); x = x1 + x2 + x3 + x4; %待处理信号由四个分量组成 X = fftshift(abs(fft(x)))/N; X_angle = fftshift(angle(fft(x))); f = (-N/2:N/2-1)*delta_f; figure(1); subplot(3,1,1); plot(t,x); title('原信号'); subplot(3,1,2); plot(f,X); grid on; title('原信号频谱幅度特性'); subplot(3,1,3); plot(f,X_angle); title('原信号频谱相位特性'); grid on; %设计一个切比雪夫低通滤波器,要求把50Hz的频率分量保留,其他分量滤掉 wp = 55/(fs/2); %通带截止频率,取50~100中间的值,并对其归一化 ws = 90/(fs/2); %阻带截止频率,取50~100中间的值,并对其归一化 alpha_p = 3; %通带允许最大衰减为 db alpha_s = 40;%阻带允许最小衰减为 db %获取阶数和截止频率 [ N1 wc1 ] = cheb1ord( wp , ws , alpha_p , alpha_s); %获得转移函数系数 [ b a ] = cheby1(N1,alpha_p,wc1,'low'); %滤波 filter_lp_s = filter(b,a,x); X_lp_s = fftshift(abs(fft(filter_lp_s)))/N; X_lp_s_angle = fftshift(angle(fft(filter_lp_s))); figure(2); freqz(b,a); %滤波器频谱特性 figure(3); subplot(3,1,1); plot(t,filter_lp_s); grid on; title('低通滤波后时域图形'); subplot(3,1,2); plot(f,X_lp_s); title('低通滤波后频域幅度特性'); subplot(3,1,3); plot(f,X_lp_s_angle); title('低通滤波后频域相位特性'); %设计一个高通滤波器,要求把400Hz的频率分量保留,其他分量滤掉 wp = 350/(fs/2); %通带截止频率,取200~400中间的值,并对其归一化 ws = 380/(fs/2); %阻带截止频率,取200~400中间的值,并对其归一化 alpha_p = 3; %通带允许最大衰减为 db alpha_s = 20;%阻带允许最小衰减为 db %获取阶数和截止频率 [ N2 wc2 ] = cheb1ord( wp , ws , alpha_p , alpha_s); %获得转移函数系数 [ b a ] = cheby1(N2,alpha_p,wc2,'high'); %滤波 filter_hp_s = filter(b,a,x); X_hp_s = fftshift(abs(fft(filter_hp_s)))/N; X_hp_s_angle = fftshift(angle(fft(filter_hp_s))); figure(4); freqz(b,a); %滤波器频谱特性 figure(5); subplot(3,1,1); plot(t,filter_hp_s); grid on; title('高通滤波后时域图形'); subplot(3,1,2); plot(f,X_hp_s); title('高通滤波后频域幅度特性'); subplot(3,1,3); plot(f,X_hp_s_angle); title('高通滤波后频域相位特性'); %设计一个带通滤波器,要求把50Hz和400Hz的频率分量滤掉,其他分量保留 wp = [65 385 ] / (fs/2); %通带截止频率,50~100、200~400中间各取一个值,并对其归一化 ws = [75 375 ] / (fs/2); %阻带截止频率,50~100、200~400中间各取一个值,并对其归一化 alpha_p = 3; %通带允许最大衰减为 db alpha_s = 20;%阻带允许最小衰减为 db %获取阶数和截止频率 [ N3 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s); %获得转移函数系数 [ b a ] = cheby1(N3,alpha_p,wn,'bandpass'); %滤波 filter_bp_s = filter(b,a,x); X_bp_s = fftshift(abs(fft(filter_bp_s)))/N; X_bp_s_angle = fftshift(angle(fft(filter_bp_s))); figure(6); freqz(b,a); %滤波器频谱特性 figure(7); subplot(3,1,1); plot(t,filter_bp_s); grid on; title('带通滤波后时域图形'); subplot(3,1,2); plot(f,X_bp_s); title('带通滤波后频域幅度特性'); subplot(3,1,3); plot(f,X_bp_s_angle); title('带通滤波后频域相位特性'); %设计一个带阻滤波器,要求把50Hz和400Hz的频率分量保留,其他分量滤掉 wp = [65 385 ] / (fs/2); %通带截止频率?,50~100、200~400中间各取一个值,并对其归一化 ws = [75 375 ] / (fs/2); %阻带截止频率?,50~100、200~400中间各取一个值,并对其归一化 alpha_p = 3; %通带允许最大衰减为 db alpha_s = 20;%阻带允许最小衰减为 db %获取阶数和截止频率 [ N4 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s); %获得转移函数系数 [ b a ] = cheby1(N4,alpha_p,wn,'stop'); %滤波 filter_bs_s = filter(b,a,x); X_bs_s = fftshift(abs(fft(filter_bs_s)))/N; X_bs_s_angle = fftshift(angle(fft(filter_bs_s))); figure(8); freqz(b,a); %滤波器频谱特性 figure(9); subplot(3,1,1); plot(t,filter_bs_s); grid on; title('带阻滤波后时域图形'); subplot(3,1,2); plot(f,X_bs_s); title('带阻滤波后频域幅度特性'); subplot(3,1,3); plot(f,X_bs_s_angle); title('带阻滤波后频域相位特性');效果: 原始信号:
生成的低通滤波器和滤波后的效果:
生成的高通滤波器和滤波后的结果:
生成的带通滤波器和滤波后的结果:
生成的带阻滤波器和滤波后的结果:
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |